package com.wangp.mywrite.inwork.pattern._3._3_1_multiply_char;

import com.wangp.mywrite.inwork.pattern.InitData;

/***
 * @author wangpeng
 * @since 2022-02-28  17:20
 */
public class MultiplyChar {

    public static void main(String[] args) {
        // 对于邮箱格式： text@text.text
        // 通过之间的学习我们可以写出： \w@\w\.\w，但是该表达式只能表达 a@b.c 的邮箱，因此我们需要用到 + 表示一个或者多个
        // 因为邮箱可以表示为：\w+@\w+\.\w+

        String firstEmailReg = "\\w+@\\w+\\.\\w+";
        // [abcd@qq.com, abcd@qq.net, _abcd@qq.net, _abcd@_qq.net, 849183239d@qq.com]
        // 遗漏了 [a@bcd.com.cn,a.b@bcd.com,.b@bcd.com]
        System.out.println(InitData.filterByRegexPattern(InitData.EMAIL_LIST,firstEmailReg));

        // 因为 \w并不匹配 . 因此使用 . 来匹配
        String secondEmailReg = "[\\w.]+@[\\w.]+\\.\\w+";
        String secondEmailRegError = "[\\w.]+@[\\w.]+\\.[\\w.]+";
        // [abcd@qq.com, abcd@qq.net, _abcd@qq.net, _abcd@_qq.net, 849183239@qq.com, a@bcd.com.cn, a.b@bcd.com, .b@bcd.com, .b@bcd..com]
        System.out.println(InitData.filterByRegexPattern(InitData.EMAIL_LIST,secondEmailReg));

        // * 匹配 0 个或者多个,上例中  [.b@bcd.com,.b@bcd..com]显然是不合法的，我们再优化下
        String thirdEmailReg = "[\\w]+[\\w.]*@[\\w.]*[\\w]+\\.\\w+";
        // [abcd@qq.com, abcd@qq.net, _abcd@qq.net, _abcd@_qq.net, 849183239@qq.com, a@bcd.com.cn, a.b@bcd.com]  这里为什么
        System.out.println(InitData.filterByRegexPattern(InitData.EMAIL_LIST,thirdEmailReg));

        // ? 匹配 0 个或者多个。
        // 匹配 url 地址
        String httpReg = "http://[\\w./]+";
        // [http://www.akulaku.com]  缺少了 https 开头的地址
        System.out.println(InitData.filterByRegexPattern(InitData.URL_LIST,httpReg));
        // 使用 ? 来匹配
        String httpsReg = "https?://[\\w./]+";
        // [http://www.akulaku.com, https://www.akulaku.com]
        System.out.println(InitData.filterByRegexPattern(InitData.URL_LIST,httpsReg));

        String httpsRegWithBracket = "http[s]?://[\\w./]+";
        // [http://www.akulaku.com, https://www.akulaku.com]
        System.out.println(InitData.filterByRegexPattern(InitData.URL_LIST,httpsRegWithBracket));

        String httpsRegWithBracket2 = "http[s?]://[\\w./]+";
        // [https://www.akulaku.com]
        System.out.println(InitData.filterByRegexPattern(InitData.URL_LIST,httpsRegWithBracket2));

        String httpsRegWithBracket3 = "http[s\\\\/?]://[\\w./]+";
        System.out.println(InitData.filterByRegexPattern(InitData.URL_LIST,httpsRegWithBracket3));
    }
}
